/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conexionFTP;

import java.io.File;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPFile;
import tools.GUI.PanelGUI;
import tools.conections.ssh.ConexionSSH;
/**
 *
 * @author felix
 */
public class Principal {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException, Exception {
        ConexionFTP cFTP = null;
        int opc = -1;
        String sFtp = null;
        String sUser = null;
        String sPass = null;
        String cadena = null;
        String cadena2 = null;
        boolean conmutador = false;
        FTPFile[] ftpfile = null;
        String[] opciones = {"Conectar", "Listar contenido", "Cambiar de directorio", "Subir Archivo", "Descargar Archivo", "Cerrar Conexión","Conexión SSH", "Salir"};
        String rutaServidor = null;
        String fichero = null;
        String ubicacionLocal = null;
        File file = null;
        ConexionSSH ssh;
        do {
            opc = PanelGUI.listaOpciones(opciones);

            switch (opc) {
                case 0:
                    try {
                        if (conmutador == false) {
                            sFtp = PanelGUI.pregunta("Inserte la dicerccion des servidor");
                            if (sFtp == null || sFtp.equals("")) {
                                PanelGUI.mensajeError("No puede dejar campos sin rellenar");
                                sFtp = null;
                                opc = -1;
                                break;
                            }
                            sUser = PanelGUI.pregunta("Inserte  el nombre de usuario");
                            if (sUser == null || sUser.equals("")) {
                                PanelGUI.mensajeError("No puede dejar campos sin rellenar");
                                sFtp = null;
                                sUser = null;
                                opc = -1;
                                break;
                            }
                            sPass = PanelGUI.contraseña();
                            if (sPass == null || sPass.equals("")) {
                                PanelGUI.mensajeError("No puede dejar campos sin rellenar");
                                sFtp = null;
                                sUser = null;
                                sPass = null;
                                opc = -1;
                                break;
                            }

                            if (sFtp.equals("") || sUser.equals("") || sPass.equals("")) {
                                PanelGUI.mensajeError("No puede dejar campos sin rellenar");
                            } else {
                                cFTP = new ConexionFTP(sFtp, sUser, sPass);
                                if (cFTP.getLogin()) {
                                    conmutador = true;
                                } else {
                                    PanelGUI.mensajeError("No se ha podido establecer la conexión");
                                    opc = -1;
                                    break;
                                }

                            }

                        } else {
                            PanelGUI.mensajeError("Error. Ya hay una conexión establecida");
                        }
                    } catch (Exception e) {
                        throw new Exception();
                    }
                    opc = -1;
                    break;
                case 1:
                    if (cFTP != null && cFTP.getLogin()) {
                        cFTP.listarDirActual();
                    } else {
                        PanelGUI.mensajeError("No hay ninguna conexión establecida");
                    }
                    opc = -1;
                    break;
                case 2:
                    if (cFTP != null && cFTP.getLogin()) {
                        cadena = PanelGUI.pregunta("inserte el nombre del subdirectorio");
                        String cad = ConexionFTP.getClient().printWorkingDirectory()
                                + "/" + cadena;
                        cFTP.cambiarDeDirectorio(cad);
                        ftpfile = null;
                    } else {
                        PanelGUI.mensajeError("No hay ninguna conexión establecida");
                    }
                    opc = -1;
                    break;
                case 3:
                    if (cFTP != null && cFTP.getLogin()) {
                        cadena = PanelGUI.pregunta("Introduzca el nombre del fichero y la ruta");
                        file = new File(cadena);
                        if (file.exists()) {
                            cFTP.subirFichero(cadena);
                        } else {
                            PanelGUI.mensajeError("Fichero no encontrado");
                        }
                    } else {
                        PanelGUI.mensajeError("No hay ninguna conexión establecida");
                    }
                    opc = -1;
                    break;
                case 4:
                    if (cFTP != null && cFTP.getLogin()) {
                        String ubicacionRemota = PanelGUI.pregunta("Inserte la ruta remota");
                        fichero = PanelGUI.pregunta("Inserte el nombre del fichero");                       
                        ubicacionLocal = "C:\\\\Users\\felix\\Documents";
                        if (fichero == null || ubicacionLocal == null) {
                            PanelGUI.mensajeError("No puede dejar campos sin rellenar");
                        } else {
                            cFTP.bajarFichero(ubicacionRemota, fichero, ubicacionLocal);
                            PanelGUI.informacion("Descarga realizada con éxito");
                        }
                    } else {
                        PanelGUI.mensajeError("No hay ninguna conexión establecida");
                    }
                    rutaServidor = null;
                    fichero = null;
                    ubicacionLocal = null;
                    opc = -1;
                    break;
                case 5:
                    if (cFTP != null && cFTP.getLogin()) {
                        cFTP.desconectar();
                        cFTP = null;
                        conmutador = false;
                    } else {
                        PanelGUI.mensajeError("No hay ninguna conexión establecida");
                    }
                    opc = -1;
                    break;
                case 6:
                    String host = PanelGUI.pregunta("Introduzca la URL del servidor");
                    String usuario = PanelGUI.pregunta("Introduzca el nombre de usario");
                    String pass = PanelGUI.contraseña();
                    ssh = new ConexionSSH(host,usuario,pass);
                    break;                    
                case 7:                    
                    if (cFTP != null && cFTP.getLogin()) {
                        cFTP.desconectar();
                    }
                    cFTP = null;
                    System.exit(0);
                    PanelGUI.informacion("Fin del Programa");
                    break;
            }
        } while (opc < 0 || opc > 7);
    }
}
